package com.zx.onlineeducation.service.edu.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zx.onlineeducation.service.edu.entity.CourseDO;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zx.onlineeducation.service.edu.entity.vo.CourseInfoVO;
import com.zx.onlineeducation.service.edu.entity.vo.CourseQueryVO;

import java.util.List;

/**
 * <p>
 * 课程 服务类
 * </p>
 *
 * @author 郑雪
 * @since 2022-01-13
 */
public interface CourseService extends IService<CourseDO> {

    /**
     * 查询课程分页数据列表
     *
     * @param current 当前页
     * @param size 每页显示条数
     * @param courseQueryVO 课程查询对象 {@link CourseQueryVO}
     * @return 分页对象 {@link Page} {@link CourseDO}
     * @author 郑雪
     * @since 2022-01-13
     */
    Page<CourseDO> page(Long current, Long size, CourseQueryVO courseQueryVO);

    /**
     * 添加课程基本信息
     *
     * @param courseInfoVO 课程基本信息视图对象 {@link CourseInfoVO}
     * @return 课程ID
     * @author 郑雪
     * @since 2022-01-13
     */
    String save(CourseInfoVO courseInfoVO);

    /**
     * 修改课程基本信息
     *
     * @param courseInfoVO 课程基本信息视图对象 {@link CourseInfoVO}
     * @return 成功true，失败false
     * @author 郑雪
     * @since 2022-01-13
     */
    boolean updateById(CourseInfoVO courseInfoVO);

    /**
     * 根据课程ID获取课程基本信息
     *
     * @param courseId 课程ID
     * @return 课程基本信息视图对象 {@link CourseInfoVO}
     * @author 郑雪
     * @since 2022-01-14
     */
    CourseInfoVO getCourseInfoById(String courseId);

    /**
     * 删除课程
     *
     * @param id 课程ID
     * @return 成功true，失败false
     * @author 郑雪
     * @since 2022-01-16
     */
    boolean removeCourseById(String id);

    /**
     * 获取热门课程数据列表
     *
     * @param courseLimit 热门课程显示条数
     * @return CourseDO对象的List集合 {@link CourseDO}
     * @author 郑雪
     * @since 2022-01-25
     */
    List<CourseDO> getHotCourseList(Integer courseLimit);

}
